import axios from 'axios';
import dotenv from 'dotenv';
import { getTokenFromStore } from '../../auth/tokenStore.js';
import { setMyProject } from '../../auth/projectStore.js'; // 新增导入

// 加载 .env 文件
dotenv.config();

// 检查 IAMEndpoint 是否存在
if (!process.env.IAMEndpoint) {
  throw new Error('IAMEndpoint is not defined in .env file');
}

// 定义请求的 URL
const url = `https://${process.env.IAMEndpoint}/v3/auth/projects`;

// 获取项目的函数
async function getProjects() {
  try {
    // 检查 .env 文件中的 region 值是否已定义
    if (!process.env.IoTDA_REGION) {
      throw new Error('Region value is not defined in .env file');
    }

    // 获取缓存的 Token
    const token = getTokenFromStore();
    if (!token) {
      throw new Error('No valid token found');
    }

    // 发送 GET 请求
    const response = await axios.get(url, {
      headers: {
        'X-Auth-Token': token,
        'Content-Type': 'application/json;charset=utf-8'
      }
    });

    // 查找与 .env 文件中 region 值匹配的项目
    const matchingProject = response.data.projects.find(project => project.name === process.env.IoTDA_REGION);
    if (!matchingProject) {
      throw new Error(`No project found with name matching region: ${process.env.region}`);
    }

    // 保存匹配项目的 id
    setMyProject(matchingProject.id);

    // 返回项目数据
    return response.data;
  } catch (error) {
    console.error('Error fetching projects:', error.response ? error.response.data : error.message);
    throw error;
  }
}

// 导出 getProjects 函数
export { getProjects };